library(tidyverse)
Registered S3 method overwritten by 'data.table':
method from
print.data.table
Registered S3 method overwritten by 'htmlwidgets':
method from
print.htmlwidget tools:rstudio
Registered S3 methods overwritten by 'dbplyr':
method from
print.tbl_lazy
print.tbl_sql
-- Attaching packages ---------------------------------------------------------------------------------------- tidyverse 1.3.1 --
v ggplot2 3.3.5 v purrr 0.3.4
v tibble 3.1.1 v dplyr 1.0.5
v tidyr 1.1.3 v stringr 1.4.0
v readr 2.0.1 v forcats 0.5.1
-- Conflicts ------------------------------------------------------------------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
Inversiones
Fuentes:
- Balances de Bolsar. Inversión calculada a partir de variaciones del activo + consumo de capital fijo (esto último está pendiente)
- Secretaria de Energía. Resolución 2057
- construir serie de inversión para atras (buscar Stock de YPF pero solo para extracción). armar ejercicio de FD y ver si las proporciones se mantienen.
Reconstruccion de serie de inversion por empresa ver un flujo de pozos y un flujo de inversion y luego ver si lo que mueve la inversion son los pozos (que su evolucion sea similar).
inversion por empresa (balance: variacion del activo + consumo de K fijo)
inversion por empresa (secretaria de energia)
inversion agregada (tipo de inversion) (cuentas nacionales?)
pozos nuevos por empresa por año
pozos nuevos totales
aplicar MIP para YPF
Inversión a partir de Balances
Inversión a partir de Secretaria de Energía
anio empresa idempresa Área/Permiso/Concesión idconcesion Yacimiento
Min. :2012 Length:13707 Min. : 16.0 Length:13707 Min. : 1.0 Length:13707
1st Qu.:2013 Class :character 1st Qu.: 233.0 Class :character 1st Qu.: 118.0 Class :character
Median :2015 Mode :character Median : 323.0 Mode :character Median : 425.0 Mode :character
Mean :2015 Mean : 466.9 Mean : 789.3
3rd Qu.:2017 3rd Qu.: 360.0 3rd Qu.: 546.0
Max. :2019 Max. :1429.0 Max. :3690.0
Cuenca Ubicación Provincia Período del plan de acción Estado de la DDJJ
Length:13707 Length:13707 Length:13707 Length:13707 Length:13707
Class :character Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character Mode :character
concepto cantidad_exploracion exploracion_millones_usd cantidad_explotacion explotacion_millones_usd
Length:13707 Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.0000
Class :character 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0280
Mode :character Median : 0.000 Median : 0.0000 Median : 0.000 Median : 0.2875
Mean : 0.781 Mean : 0.2538 Mean : 6.201 Mean : 3.9194
3rd Qu.: 0.000 3rd Qu.: 0.0000 3rd Qu.: 1.000 3rd Qu.: 1.7323
Max. :3043.000 Max. :89.3530 Max. :16000.000 Max. :1717.0000
NA's :4 NA's :7 NA's :3
cantidad_exploracion_complementaria exploracion_compl_millones_usd Fecha Inicio Tareas Fecha Fin Tareas
Min. : 0.0000 Min. : 0.0000 Min. :NA Min. :NA
1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.:NA 1st Qu.:NA
Median : 0.0000 Median : 0.0000 Median :NA Median :NA
Mean : 0.6065 Mean : 0.1477 Mean :NA Mean :NA
3rd Qu.: 0.0000 3rd Qu.: 0.0000 3rd Qu.:NA 3rd Qu.:NA
Max. :876.6300 Max. :92.8340 Max. :NA Max. :NA
NA's :2 NA's :13707 NA's :13707
Tipo de explotación indice_tiempo
Length:13707 Length:13707
Class :character Class :character
Mode :character Mode :character

inv_anual_emp = inversiones_anio_anterior %>%
group_by(empresa, anio, unidad) %>%
summarise(inversion_anual = sum(inversion_exploracion, inversion_explotacion)) %>%
rbind(inversiones_2005_2012)
`summarise()` has grouped output by 'empresa', 'anio'. You can override using the `.groups` argument.
plot_inv_anual = inv_anual_emp %>%
ggplot(aes(anio, inversion_anual, color = empresa))+
geom_line()+
geom_point()+
labs(title = "Inversiones por empresa (tablas dinamicas)",
subtitle = "Extraído de tablas dinámicas",
y = "Millones de USD",
caption = "Secretaria de Energía")+
theme(legend.position = "none")
# plotly::ggplotly(plot_inv_anual)
plot_inv_anual

inv_anual_emp %>%
ungroup() %>%
filter(empresa == "YPF", anio %in% 2008:2015) %>%
summarise(sum(inversion_anual))
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpgYGANCg0KDQojIyBJbnZlcnNpb25lcw0KDQpGdWVudGVzOiANCg0KKiBCYWxhbmNlcyBkZSBCb2xzYXIuIEludmVyc2nDs24gY2FsY3VsYWRhIGEgcGFydGlyIGRlIHZhcmlhY2lvbmVzIGRlbCBhY3Rpdm8gKyBjb25zdW1vIGRlIGNhcGl0YWwgZmlqbyAoZXN0byDDumx0aW1vIGVzdMOhIHBlbmRpZW50ZSkNCiogU2VjcmV0YXJpYSBkZSBFbmVyZ8OtYS4gUmVzb2x1Y2nDs24gMjA1NyANCiAgKyBbSW52ZXJzaW9uZXMgcmVhbGl6YWRhcyBhw7FvIGFudGVyaW9yXShodHRwOi8vZGF0b3MubWluZW0uZ29iLmFyL2RhdGFzZXQvaW52ZXJzaW9uZXMtZW4tbWVyY2Fkby1kZS1oaWRyb2NhcmJ1cm9zLXVwc3RyZWFtL2FyY2hpdm8vMjg1ZDQ1ZTUtMWI4OC00ZGFlLThlNWMtYzAxODQzYzdjOGMwKQ0KICArIFtJbnZlcnNpb25lcyBhbnVhbGVzIHByZXZpc3RhcyBhIHJlYWxpemFyIGVuIGVsIGHDsW8gZGUgbGEgcHJlc2VudGFjacOzbiBkZSBsYSBEREpKXShodHRwOi8vZGF0b3MubWluZW0uZ29iLmFyL2RhdGFzZXQvaW52ZXJzaW9uZXMtZW4tbWVyY2Fkby1kZS1oaWRyb2NhcmJ1cm9zLXVwc3RyZWFtKQ0KDQoNCjQpIGNvbnN0cnVpciBzZXJpZSBkZSBpbnZlcnNpw7NuIHBhcmEgYXRyYXMgKGJ1c2NhciBTdG9jayBkZSBZUEYgcGVybyBzb2xvIHBhcmEgZXh0cmFjY2nDs24pLiBhcm1hciBlamVyY2ljaW8gZGUgRkQgeSB2ZXIgc2kgbGFzIHByb3BvcmNpb25lcyBzZSBtYW50aWVuZW4uIA0KDQoqIFJlY29uc3RydWNjaW9uIGRlIHNlcmllIGRlIGludmVyc2lvbiBwb3IgZW1wcmVzYQ0KdmVyIHVuIGZsdWpvIGRlIHBvem9zIHkgdW4gZmx1am8gZGUgaW52ZXJzaW9uIHkgbHVlZ28gdmVyIHNpIGxvIHF1ZSBtdWV2ZSBsYSBpbnZlcnNpb24gc29uIGxvcyBwb3pvcyAocXVlIHN1IGV2b2x1Y2lvbiBzZWEgc2ltaWxhcikuIA0KDQotIGludmVyc2lvbiBwb3IgZW1wcmVzYSAoYmFsYW5jZTogdmFyaWFjaW9uIGRlbCBhY3Rpdm8gKyBjb25zdW1vIGRlIEsgZmlqbykNCi0gaW52ZXJzaW9uIHBvciBlbXByZXNhIChzZWNyZXRhcmlhIGRlIGVuZXJnaWEpDQotIGludmVyc2lvbiBhZ3JlZ2FkYSAodGlwbyBkZSBpbnZlcnNpb24pIChjdWVudGFzIG5hY2lvbmFsZXM/KQ0KLSBwb3pvcyBudWV2b3MgcG9yIGVtcHJlc2EgcG9yIGHDsW8NCi0gcG96b3MgbnVldm9zIHRvdGFsZXMNCi0gYXBsaWNhciBNSVAgcGFyYSBZUEYgDQoNCkludmVyc2nDs24gYSBwYXJ0aXIgZGUgQmFsYW5jZXMNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCiMgaW52ZXJzaW9uZXNfZW1wcmVzYSA8LSBzdG9ja19iYWxhbmNlc19lbXByZXNhcyAlPiUNCiMgICB1bmdyb3VwKCkgJT4lIA0KIyAgIHNlbGVjdCgtYyhmdWVudGUsIHNlY3RvcikpICU+JSANCiMgICBmaWx0ZXIodmFyaWFibGUgPT0gInBweWUiKSAlPiUNCiMgICBhcnJhbmdlKGVtcHJlc2EsIGFuaW8pICU+JSANCiMgICBncm91cF9ieSh1bmlkYWQsIHZhcmlhYmxlLCBlbXByZXNhKSAlPiUNCiMgICBtdXRhdGUodmFsb3IgPSB2YXJpYWNpb25faW50ZXJhbnVhbCh2YWxvcikpDQojICAgIA0KIyAjIGludmVyc2lvbmVzX2VtcHJlc2ENCiMgDQojIGdyYWZfaW52ZXJzaW9uZXNfZW1wcmVzYSA8LSBpbnZlcnNpb25lc19lbXByZXNhICU+JSANCiMgICBmaWx0ZXIoZW1wcmVzYSAhPSAiQ2FtdXp6aSBHYXMgUGFtcGVhbmEiKSAlPiUgDQojICAgZ2dwbG90KGFlcyhhbmlvLCB2YWxvciwgY29sb3IgPSBlbXByZXNhKSkrIA0KIyAgIGdlb21fbGluZSgpKw0KIyAgIGdlb21fcG9pbnQoKSsNCiMgICBsYWJzKHRpdGxlID0gIkludmVyc2lvbmVzIHBvciBlbXByZXNhIiwNCiMgICAgICAgIHN1YnRpdGxlID0gIkEgcGFydGlyIGRlIGJhbGFuY2VzIiwNCiMgICAgICAgICB5ID0gIk1pbGxvbmVzIGRlIHBlc29zIGRlIDIwMTgiLA0KIyAgICAgICAgY2FwdGlvbiA9ICJCYWxhbmNlcyBkZSBlbXByZXNhcyBleHRyYcOtZG9zIGRlIEJvbHNhciIpKw0KIyAgIGZhY2V0X3dyYXAofnZhcmlhYmxlKQ0KIyAjIGdncGxvdGx5KGdyYWZfaW52ZXJzaW9uZXNfZW1wcmVzYSwgd2lkdGggPSA4MDAsIGhlaWdodCA9IDYwMCkNCg0KYGBgDQoNCg0KSW52ZXJzacOzbiBhIHBhcnRpciBkZSBTZWNyZXRhcmlhIGRlIEVuZXJnw61hDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcmF3X2RhdGEgPC0gcmVhZF9jc3YoIi4uL2RhdGEvc2VjcmV0YXJpYV9lbmVyZ2lhLzIwNTcvcmVzb2x1Y2luLTIwNTctaW52ZXJzaW9uZXMtcmVhbGl6YWRhcy1hby1hbnRlcmlvci5jc3YiLCANCiAgICBjb2xfdHlwZXMgPSBjb2xzKGBGZWNoYSBGaW4gVGFyZWFzYCA9IGNvbF9kYXRlKGZvcm1hdCA9ICIlZC8lbS8lWSIpLCANCiAgICAgICAgYEZlY2hhIEluaWNpbyBUYXJlYXNgID0gY29sX2RhdGUoZm9ybWF0ID0gIiVkLyVtLyVZIikpKSAlPiUgDQogIHJlbmFtZShhbmlvID0gIkHDsW8gZGUgcHJlc2VudGFjacOzbiBkZSBsYSBEREpKIiwNCiAgICAgICAgIGVtcHJlc2EgPSAiRW1wcmVzYSBpbmZvcm1hbnRlIiwNCiAgICAgICAgIGNvbmNlcHRvID0gIkRlc2NyaXBjacOzbiBkZWwgcGxhbiBkZSBhY2Npw7NuIChDb25jZXB0b3MpIiwNCiAgICAgICAgIGNhbnRpZGFkX2V4cGxvcmFjaW9uID0gIkNhbnQuIEV4cGxvcmFjaW9uIiwNCiAgICAgICAgIGNhbnRpZGFkX2V4cGxvdGFjaW9uID0gIkNhbnQuIEV4cGxvdGFjaW9uIiwNCiAgICAgICAgIGNhbnRpZGFkX2V4cGxvcmFjaW9uX2NvbXBsZW1lbnRhcmlhID0gIkNhbnQuIEV4cGxvcmFjaW9uIENvbXBsZW1lbnRhcmlhIiwNCiAgICAgICAgIGV4cGxvcmFjaW9uX21pbGxvbmVzX3VzZCA9ICJNaWxsb25lcyB1JHMgRXhwbG9yYWNpb24iLA0KICAgICAgICAgZXhwbG90YWNpb25fbWlsbG9uZXNfdXNkID0gIk1pbGxvbmVzIHUkcyBFeHBsb3RhY2lvbiIsDQogICAgICAgICBleHBsb3JhY2lvbl9jb21wbF9taWxsb25lc191c2QgPSAiTWlsbG9uZXMgdSRzIEV4cC4gQ29tcGxlbWVudGFyaWEiKSAlPiUgDQogIG11dGF0ZShhbmlvID0gYW5pbyAtIDEsDQogICAgICAgICBlbXByZXNhID1jYXNlX3doZW4oZW1wcmVzYSA9PSAiWVBGIFMuQS4iIH4gIllQRiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUEFOIEFNRVJJQ0FOIEVORVJHWSAoU1VDVVJTQUwgQVJHRU5USU5BKSBMTEMiIH4gIlBBRSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUEFOIEFNRVJJQ0FOIEVORVJHWSBTTCIgfiAiUEFFIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJQRVRST0JSQVMgQVJHRU5USU5BIFMuQS4iIH4gIlBldHJvYnJhcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUEVTQSAoUEVUUk9CUkFTIEUuUy5BLikiIH4gIlBldHJvYnJhcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiRU5BUCBTSVBFVFJPTCBBUkdFTlRJTkEgUy5BLiIgfiAiRU5BUCBTSVBFVFJPTCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiVklTVEEgT0lMICYgR0FTIEFSR0VOVElOQSBTQVUiIH4gIlZpc3RhIE9pbCBhbmQgR2FzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJWSVNUQSBPSUwgJiBHQVMgQVJHRU5USU5BIFNBIiB+ICJWaXN0YSBPaWwgYW5kIEdhcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiU0lOT1BFQyBBUkdFTlRJTkEgRVhQTE9SQVRJT04gQU5EIFBST0RVQ1RJT04sIElOQy4iIH4gIlNpbm9wZWMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlRFQ1BFVFJPTCBTLkEuIiB+ICJUZWNwZXRyb2wiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJQTFVTUEVUUk9MIFMuQS4iIH4gIlBsdXNwZXRyb2wiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlBMVVNQRVRST0wgRU5FUkdZIFMuQS4iIH4gIlBsdXNwZXRyb2wiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIkNPTVBBw5HDjUEgR0VORVJBTCBERSBDT01CVVNUSUJMRVMgUy5BLiIgfiAiQ0dDIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJXSU5URVJTSEFMTCBFTkVSR0lBIFMuQS4iIH4gIldpbnRlcnNoYWxsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJZU1VSIEVORVJHw41BIEFSR0VOVElOQSBTLlIuTC4iIH4gIllTVVIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIllTVVIgUEVUUk9MRVJBIEFSR0VOVElOQSBTLkEuIiB+ICJZU1VSIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJUT1RBTCBBVVNUUkFMIFMuQS4iIH4gIlRvdGFsIEF1c3RyYWwiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgfiBlbXByZXNhKSkgIyU+JSANCiAgIyBzZWxlY3QoYW5pbywgZW1wcmVzYSwgaWRlbXByZXNhLCAgY29uY2VwdG8sDQogICMgICAgICAgIGNhbnRpZGFkX2V4cGxvcmFjaW9uLCBjYW50aWRhZF9leHBsb3RhY2lvbixjYW50aWRhZF9leHBsb3JhY2lvbl9jb21wbGVtZW50YXJpYSwNCiAgIyAgICAgICAgZXhwbG9yYWNpb25fbWlsbG9uZXNfdXNkLGV4cGxvdGFjaW9uX21pbGxvbmVzX3VzZCwgZXhwbG9yYWNpb25fY29tcGxfbWlsbG9uZXNfdXNkICkgDQoNCnVuaXF1ZShyYXdfZGF0YSRjb25jZXB0bykNCmdsaW1wc2UocmF3X2RhdGEpDQpzdW1tYXJ5KHJhd19kYXRhKQ0KDQppbnZlcnNpb25lc19hbmlvX2FudGVyaW9yIDwtIHJhd19kYXRhICU+JSANCiAgIyBmaWx0ZXIoc3RyX2RldGVjdChjb25jZXB0bywgJ3Bvem8nKSkgJT4lDQogIGdyb3VwX2J5KGVtcHJlc2EsIGFuaW8pICU+JSANCiAgc3VtbWFyaXNlKGludmVyc2lvbl9leHBsb3RhY2lvbiA9IHN1bShleHBsb3RhY2lvbl9taWxsb25lc191c2QsIG5hLnJtID0gVCksDQogICAgICAgICAgICBpbnZlcnNpb25fZXhwbG9yYWNpb24gPSBzdW0oZXhwbG9yYWNpb25fbWlsbG9uZXNfdXNkLCBuYS5ybSA9IFQpKSAlPiUgDQogIGFycmFuZ2UoLWludmVyc2lvbl9leHBsb3RhY2lvbikgJT4lIA0KICBtdXRhdGUodW5pZGFkID0gIk1pbGxvbmVzIGRlIFVTRCIpDQppbnZlcnNpb25lc19hbmlvX2FudGVyaW9yDQoNCg0KDQpgYGANCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcmVzb2x1Y2luXzIwNTdfaW52ZXJzaW9uZXNfcmVhbGl6YWRhc19tZW5zdWFsIDwtIHJlYWRfY3N2KCIuLi9kYXRhL3NlY3JldGFyaWFfZW5lcmdpYS8yMDU3L3Jlc29sdWNpbi0yMDU3LWludmVyc2lvbmVzLXJlYWxpemFkYXMtbWVuc3VhbC5jc3YiKQ0KDQpyZXNvbHVjaW5fMjA1N19pbnZlcnNpb25lc19maW5fY29uY2VzaW9uPC0gcmVhZF9jc3YoIi4uL2RhdGEvc2VjcmV0YXJpYV9lbmVyZ2lhLzIwNTcvcmVzb2x1Y2luLTIwNTctaW52ZXJzaW9uZXMtcmVhbGl6YWRhcy1maW4tZGUtY29uY2VzaW4uY3N2IikNCg0KcmVzb2x1Y2luXzIwNTdfaW52ZXJzaW9uZXNfZmluX2NvbmNlc2lvbiAlPiUNCiAgcmVuYW1lKGFuaW8gPSAiQcOxbyBkZSBwcmVzZW50YWNpw7NuIGRlIGxhIERESkoiLA0KICAgICAgICAgICBlbXByZXNhID0gIkVtcHJlc2EgaW5mb3JtYW50ZSIsDQogICAgICAgICAgIGNvbmNlcHRvID0gIkRlc2NyaXBjacOzbiBkZWwgcGxhbiBkZSBhY2Npw7NuIChDb25jZXB0b3MpIiwNCiAgICAgICAgICAgY2FudGlkYWRfZXhwbG9yYWNpb24gPSAiQ2FudC4gRXhwbG9yYWNpb24iLA0KICAgICAgICAgICBjYW50aWRhZF9leHBsb3RhY2lvbiA9ICJDYW50LiBFeHBsb3RhY2lvbiIsDQogICAgICAgICAgIGNhbnRpZGFkX2V4cGxvcmFjaW9uX2NvbXBsZW1lbnRhcmlhID0gIkNhbnQuIEV4cGxvcmFjaW9uIENvbXBsZW1lbnRhcmlhIiwNCiAgICAgICAgICAgZXhwbG9yYWNpb25fbWlsbG9uZXNfdXNkID0gIk1pbGxvbmVzIHUkcyBFeHBsb3JhY2lvbiIsDQogICAgICAgICAgIGV4cGxvdGFjaW9uX21pbGxvbmVzX3VzZCA9ICJNaWxsb25lcyB1JHMgRXhwbG90YWNpb24iLA0KICAgICAgICAgICBleHBsb3JhY2lvbl9jb21wbF9taWxsb25lc191c2QgPSAiTWlsbG9uZXMgdSRzIEV4cC4gQ29tcGxlbWVudGFyaWEiKSAlPiUgDQogIGdyb3VwX2J5KGFuaW8pICU+JSANCiAgc3VtbWFyaXNlKGludmVyc2lvbl9hbnVhbCA9IHN1bShleHBsb3RhY2lvbl9taWxsb25lc191c2QsIGV4cGxvcmFjaW9uX21pbGxvbmVzX3VzZCkpDQogIA0KDQpgYGANCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KaW52ZXJzaW9uZXNfMjAwNV8yMDEyIDwtIHJlYWR4bDo6cmVhZF9leGNlbCgiLi4vZGF0YS9zZWNyZXRhcmlhX2VuZXJnaWEvMjA1Ny9pbnZlcnNpb25lc18yMDA1XzIwMTIueGxzeCIsIA0KICAgIGNvbF90eXBlcyA9IGMoIm51bWVyaWMiLCAidGV4dCIsICJ0ZXh0IiwgDQogICAgICAgICJudW1lcmljIiwgIm51bWVyaWMiLCAibnVtZXJpYyIpLCANCiAgICBza2lwID0gOCkgJT4lIA0KICByZW5hbWUocGxhbl8xcmFfc2VtYW5hID0gIlBsYW4gMcKqIFNlbS4iLA0KICAgICAgICAgcGxhbl9hbnVhbCA9ICJQbGFuIEFudWFsIiwNCiAgICAgICAgIHJlYWxpemFkb19hbnVhbCA9ICJSZWFsaXphZG8gQW51YWwiLA0KICAgICAgICAgY29uY2VwdG8gPSBDb25jZXB0bykgJT4lIA0KICBtdXRhdGUoYW5pbyA9ICB6b286Om5hLmxvY2YoYW5pbyksDQogICAgICAgICBlbXByZXNhID0gIHpvbzo6bmEubG9jZihlbXByZXNhKSwNCiAgICAgICAgIHVuaWRhZCA9ICJNaWxsb25lcyBkZSBVU0QiLA0KICAgICAgICAgZW1wcmVzYSA9Y2FzZV93aGVuKGVtcHJlc2EgPT0gIllQRiBTLkEuIiB+ICJZUEYiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlBBTiBBTUVSSUNBTiBFTkVSR1kgKFNVQ1VSU0FMIEFSR0VOVElOQSkgTExDIiB+ICJQQUUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlBBTiBBTUVSSUNBTiBFTkVSR1kgU0wiIH4gIlBBRSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUEVUUk9CUkFTIEFSR0VOVElOQSBTLkEuIiB+ICJQZXRyb2JyYXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlBFU0EgKFBFVFJPQlJBUyBFLlMuQS4pIiB+ICJQZXRyb2JyYXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIkVOQVAgU0lQRVRST0wgQVJHRU5USU5BIFMuQS4iIH4gIkVOQVAgU0lQRVRST0wiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlZJU1RBIE9JTCAmIEdBUyBBUkdFTlRJTkEgU0FVIiB+ICJWaXN0YSBPaWwgYW5kIEdhcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiVklTVEEgT0lMICYgR0FTIEFSR0VOVElOQSBTQSIgfiAiVmlzdGEgT2lsIGFuZCBHYXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHJlc2EgPT0gIlNJTk9QRUMgQVJHRU5USU5BIEVYUExPUkFUSU9OIEFORCBQUk9EVUNUSU9OLCBJTkMuIiB+ICJTaW5vcGVjIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJURUNQRVRST0wgUy5BLiIgfiAiVGVjcGV0cm9sIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiUExVU1BFVFJPTCBTLkEuIiB+ICJQbHVzcGV0cm9sIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJQTFVTUEVUUk9MIEVORVJHWSBTLkEuIiB+ICJQbHVzcGV0cm9sIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJDT01QQcORw41BIEdFTkVSQUwgREUgQ09NQlVTVElCTEVTIFMuQS4iIH4gIkNHQyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiV0lOVEVSU0hBTEwgRU5FUkdJQSBTLkEuIiB+ICJXaW50ZXJzaGFsbCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiWVNVUiBFTkVSR8ONQSBBUkdFTlRJTkEgUy5SLkwuIiB+ICJZU1VSIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXByZXNhID09ICJZU1VSIFBFVFJPTEVSQSBBUkdFTlRJTkEgUy5BLiIgfiAiWVNVUiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wcmVzYSA9PSAiVE9UQUwgQVVTVFJBTCBTLkEuIiB+ICJUb3RhbCBBdXN0cmFsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUIH4gZW1wcmVzYSkpICU+JSANCiAgZmlsdGVyKCEoZW1wcmVzYSAlaW4lIGMoIk8mRyBERVZFTE9QTUVOVFMgTFREIFMuQS4iICwiUEVUUk9NSU5FUkEgQ0hVQlVUIFMuRS4iKSkpICU+JQ0KICAjIGZpbHRlcihzdHJfZGV0ZWN0KGNvbmNlcHRvLCAncG96bycpKSAlPiUNCiAgZ3JvdXBfYnkoZW1wcmVzYSwgYW5pbywgdW5pZGFkKSAlPiUgDQogIHN1bW1hcmlzZShpbnZlcnNpb25fYW51YWwgPSBzdW0ocmVhbGl6YWRvX2FudWFsLCBuYS5ybSA9IFQpKSAlPiUgDQogIGFycmFuZ2UoLWludmVyc2lvbl9hbnVhbCkNCmludmVyc2lvbmVzXzIwMDVfMjAxMg0KDQppbnZlcnNpb25lc19hbnVhbCA9IGludmVyc2lvbmVzXzIwMDVfMjAxMiAlPiUgDQogIGZpbHRlcihhbmlvICE9IDIwMTIpICU+JSANCiAgZ3JvdXBfYnkoYW5pbykgJT4lIA0KICBzdW1tYXJpc2UoaW52ZXJzaW9uX2FudWFsID0gc3VtKGludmVyc2lvbl9hbnVhbCkpICU+JSANCiAgcmJpbmQoaW52ZXJzaW9uZXNfYW5pb19hbnRlcmlvciAlPiUgDQogICAgICAgICAgZ3JvdXBfYnkoYW5pbykgJT4lIA0KICAgICAgICAgIHN1bW1hcmlzZShpbnZlcnNpb25fYW51YWwgPSBzdW0oaW52ZXJzaW9uX2V4cGxvdGFjaW9uLCBpbnZlcnNpb25fZXhwbG9yYWNpb24pKSApDQoNCmludmVyc2lvbmVzX2FudWFsICU+JSANCiAgZ2dwbG90KGFlcyhhbmlvLCBpbnZlcnNpb25fYW51YWwpKSsNCiAgZ2VvbV9jb2woKSsNCiAgbGFicyh0aXRsZSA9ICJJbnZlcnNpw7NuIGFudWFsIHRvdGFsIGVuIGVsIHNlY3RvciBoaWRyb2NhcmJ1csOtZmVybyIsIA0KICAgICAgIHkgPSAiTWlsbG9uZXMgZGUgVVNEIiwgeCA9ICJBw7FvIiwgY2FwdGlvbiA9ICJFbGFib3JhY2nDs24gcHJvcGlhIGVuIGJhc2UgYSBTZWNyZXRhcsOtYSBkZSBFbmVyZ8OtYSIpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gcm91bmQoc2VxKDAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heChpbnZlcnNpb25lc19hbnVhbCRpbnZlcnNpb25fYW51YWwpKzEwMDAsIGJ5ID0gMTAwMCkpKSsNCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHJvdW5kKHNlcShtaW4oaW52ZXJzaW9uZXNfYW51YWwkYW5pbyksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heChpbnZlcnNpb25lc19hbnVhbCRhbmlvKSwgYnkgPSAxKSkpKw0KdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpKQ0KDQoNCg0KYGBgDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCmdyYWZfaW52ZXJzaW9uZXNfMjAwNV8yMDEyIDwtICBpbnZlcnNpb25lc18yMDA1XzIwMTIgJT4lDQogIGdncGxvdChhZXMoYW5pbywgaW52ZXJzaW9uX2FudWFsLCBjb2xvciA9IGVtcHJlc2EpKSsgDQogIGdlb21fbGluZSgpKw0KICBnZW9tX3BvaW50KCkrDQogIGxhYnModGl0bGUgPSAiSW52ZXJzaW9uZXMgcG9yIGVtcHJlc2EgKHRhYmxhcyBkaW5hbWljYXMpIiwNCiAgICAgICBzdWJ0aXRsZSA9ICJFeHRyYcOtZG8gZGUgdGFibGFzIGRpbsOhbWljYXMiLA0KICAgICAgICB5ID0gIk1pbGxvbmVzIGRlIFVTRCIsDQogICAgICAgY2FwdGlvbiA9ICJTZWNyZXRhcmlhIGRlIEVuZXJnw61hIikrDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCnBsb3RseTo6Z2dwbG90bHkoZ3JhZl9pbnZlcnNpb25lc18yMDA1XzIwMTIpDQoNCmdyYWZfaW52ZXJzaW9uZXNfYW5pb19hbnRlcmlvciA8LSAgaW52ZXJzaW9uZXNfYW5pb19hbnRlcmlvciAlPiUNCiAgZ2dwbG90KGFlcyhhbmlvLCBpbnZlcnNpb25fZXhwbG90YWNpb24sIGNvbG9yID0gZW1wcmVzYSkpKyANCiAgZ2VvbV9saW5lKCkrDQogIGdlb21fcG9pbnQoKSsNCiAgbGFicyh0aXRsZSA9ICJJbnZlcnNpb25lcyBwb3IgZW1wcmVzYSAoYcOxbyBhbnRlcmlvcikiLA0KICAgICAgIHN1YnRpdGxlID0gIkludmVyc2lvbmVzIGHDsW8gYW50ZXJpb3IiLA0KICAgICAgICB5ID0gIk1pbGxvbmVzIGRlIFVTRCIsDQogICAgICAgY2FwdGlvbiA9ICJTZWNyZXRhcmlhIGRlIEVuZXJnw61hIikrDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCnBsb3RseTo6Z2dwbG90bHkoZ3JhZl9pbnZlcnNpb25lc19hbmlvX2FudGVyaW9yKQ0KDQpgYGANCmBgYHtyfQ0KaW52X2FudWFsX2VtcCA9IGludmVyc2lvbmVzX2FuaW9fYW50ZXJpb3IgJT4lIA0KICBncm91cF9ieShlbXByZXNhLCBhbmlvLCB1bmlkYWQpICU+JSANCiAgc3VtbWFyaXNlKGludmVyc2lvbl9hbnVhbCA9IHN1bShpbnZlcnNpb25fZXhwbG9yYWNpb24sIGludmVyc2lvbl9leHBsb3RhY2lvbikpICU+JSANCiAgcmJpbmQoaW52ZXJzaW9uZXNfMjAwNV8yMDEyKQ0KDQpwbG90X2ludl9hbnVhbCA9IGludl9hbnVhbF9lbXAgJT4lIA0KICBnZ3Bsb3QoYWVzKGFuaW8sIGludmVyc2lvbl9hbnVhbCwgY29sb3IgPSBlbXByZXNhKSkrIA0KICBnZW9tX2xpbmUoKSsNCiAgZ2VvbV9wb2ludCgpKw0KICBsYWJzKHRpdGxlID0gIkludmVyc2lvbmVzIHBvciBlbXByZXNhICh0YWJsYXMgZGluYW1pY2FzKSIsDQogICAgICAgc3VidGl0bGUgPSAiRXh0cmHDrWRvIGRlIHRhYmxhcyBkaW7DoW1pY2FzIiwNCiAgICAgICAgeSA9ICJNaWxsb25lcyBkZSBVU0QiLA0KICAgICAgIGNhcHRpb24gPSAiU2VjcmV0YXJpYSBkZSBFbmVyZ8OtYSIpKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQoNCiMgcGxvdGx5OjpnZ3Bsb3RseShwbG90X2ludl9hbnVhbCkNCnBsb3RfaW52X2FudWFsDQpgYGANCmBgYHtyIH0NCmludl9hbnVhbF9lbXAgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBmaWx0ZXIoZW1wcmVzYSA9PSAiWVBGIiwgYW5pbyAlaW4lIDIwMDg6MjAxNSkgJT4lIA0KICBzdW1tYXJpc2Uoc3VtKGludmVyc2lvbl9hbnVhbCkpDQpgYGANCg0KDQo=